/* eslint valid-jsdoc: "off" */

'use strict';
const path = require('path');
/**
 * @param {Egg.EggAppInfo} appInfo app info
 */
module.exports = appInfo => {
    const config = (exports = {});

    config.keys = appInfo.name + '_T7oWwCaa92FG';

    // 在这添加中间件
    config.middleware = ['errorHandler', 'macaddr', 'myJwt', 'authority'];
    // 关闭egg自带csrf校验
    config.security = {
        csrf: {
            enable: false
        }
    };
    config.multipart = {
        fields: '100',
        fileSize: '50mb',
        mode: 'file',
        whitelist: [
            '.jpg',
            '.jpeg', // image/jpeg
            '.png', // image/png, image/x-png
            '.gif', // image/gif
            '.bmp', // image/bmp
            '.wbmp', // image/vnd.wap.wbmp
            '.webp',
            '.xlsx',
            '.xls'
        ]
    };
    // 关闭跨域校验
    config.cors = {
        origin: '*',
        // allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH',
        allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH,OPTIONS'
    };
    config.security = {
        csrf: {
            enable: false,
            domainWhiteList: ['*']
        }
    };
    // 权限中间件
    config.authority = {
        enable: true,
        ignore: ['/h5/getH5ActiveCaculate'] //如果配置了，忽略权限
    };

    // jwt 配置
    config.myJwt = {
        secret: 'T7oWwCaa92FG',
        enable: true,
        // 不校验token列表  match和ignore不能同时使用
        ignore: ['/gis/getTagIdByObjectCode'], //配置忽略token
        expiresIn: 60 * 60 * 12 // token有效时长 ,暂定 12 小时
    };

    // 日志
    config.logger = {
        consoleLevel: 'DEBUG', // 终端日志打印，只在开发环境和测试环境才打印，生产环境不打印
        level: 'DEBUG', // 日志文件级别
        /**
         *  为了避免一些插件的调试日志在生产环境打印导致性能问题，
         *  生产环境默认禁止打印 DEBUG 级别的日志，
         *  如果确实有需求在生产环境打印 DEBUG 日志进行调试，
         *  需要打开 allowDebugAtProd 配置项。
         * */
        allowDebugAtProd: true,
        // outputJSON: true,
        encoding: 'utf-8',
        // dir: "/home/ais-manage-sys-dev/logs/",
        dir: __dirname + './../logs/'
    };

    exports.logrotator = {
        maxDays: 0 // keep max days log files, default is `31`. Set `0` to keep all logs
    };

    config.uuid = {
        secret: '042ffd34-d989-321c-ad06-f60826172424'
    };

    // 在这添加用户配置信息
    const userConfig = {
        // 是否单点登陆
        isSingleLoagin: false,
        isCheckMac: false,
        mycfg: {
            name: 'eggsy', //在controller中取出：this.app.config.mycfg.name;
        }

    };

    return {
        ...config,
        ...userConfig
    };
};